Video display systems often use character generators to generate the internal signal patterns needed for displaying letters, symbols, numbers, or other characters on a display monitor. This is because a character generator permits data to be efficiently transferred within a display system or from an external source to a display system. Basically a character generator stores the image or "character mask" of all the characters to be displayed by a system.
There are two types of character generators: the dot-matrix generator and the vector or line-drawing generator. The dot-matrix character generator represents each character by a dotted-pattern character mask. Each character mask is defined by a predetermined number of dots arranged in a predetermined number of rows and columns, such as for example, a 5.times.7 or a 7.times.9 dot-matrix. Sets of characters are defined based on the same dot-matrices.
To display a character on the screen the character generator provides the relevant character mask from its internal memory to a display frame buffer. Under suitable controls, the display frame buffer maps the character dot-matrix into a matrix or raster of pixels on the display screen. A display controller scans the frame buffer contents then plots point-by-point the intensity value of each pixel on the display screen.
While widely used, there are a number of disadvantages with conventional dot-plotting character generators in a raster-scan type display system. A dot-plotting display system is several orders of magnitude slower than, for example, a vector-drawing display system. Character scaling is limited to discrete multiples of the basic character sets used, and therefore, continuous character scaling is not possible. Furthermore, when a dot-matrix character is scaled up in size, discrete quantization effects can give the magnified character an aesthetically distasteful appearance. And when scaled down in size the character becomes unreadable very quickly. Character transformations such as rotations or reflections, generally are not implemented with digital circuitry because even a simple transformation would require extensive manipulation of the stored data. Even if the economics of the situation would permit it, the CPU computation time would be unacceptably long. Analog circuits have been used; however, this technique requires digital-to-analog converters. (See Principles Of Interactive Computer Graphics, by Newman and Sproull, 1973 by McGraw-Hill, Inc.).
In a conventional random-scan vector-drawing display system, a character image is represented or encoded by stroke-drawing directives. A display controller decodes the stroke-drawing directives and converts them into deflection voltages to be applied to the yoke of a CRT. The starting point of a character is defined by the current beam position. Printed displays are operated in much the same way with pen motion being controlled by deflection voltages.
Manufacturers of random-scan display systems using conventional stroke-vector character generators (i.e. vector-drawing generators) generally have neglected to explore the potential of manipulating a character image by adjusting the attributes of the stroke-vectors. (An attribute is a settable parameter such as for example the horizontal stroke dimension.) For example, a character rotation transformation of a character image can be effected by applying the corresponding transformation to the composing stroke-vectors, i.e., the stroke-vectors making up the character. Another example would be the addition of an extra "width" characteristic to a stroke-vector could give the corresponding character image a more aesthetically pleasing appearance.
While the above discussion points out a number of disadvantages in employing the conventional dot-matrix character generator in raster-scan display systems and a number of potential advantages to the existing stroke-vector character generation technique; very little has been done, heretofore, to increase the effectiveness of the stroke-vector character generator in a raster-scan display system.
In the discussion of this invention, the following terminology will be used. The input signals to the character generator designate a character identification (ID) code, a character drawing point, a character rotation, a character reflection and the dimensions of the character field. A character field is defined to be a rectangular display area within which the image of a character can be defined. A character scaling transformation scales the size of a character image by scaling the character field dimensions. A character rotation transformation causes the character field to rotate counterclockwise about the character field origin. A character reflection transformation causes a reflected image of the character field about either the vertical or the horizontal center axes of the character field.
In a stroke-vector character generation system, a character image is formed on a display screen by a series of straight line trajectories of stroke-vectors (called stroke-trajectories). Each so-called stroke-trajectory is composed of one or more uniform length strokes pointing in the same direction. A single stroke or stroke-vector is defined to be a two-dimensional vector quantity having a length dimension, a width dimension, and a direction. The dimensional qualitities of a stroke-vector may be characterized by a set of stroke attributes which can either be character-field-size dependent (referred to herein as global attributes) or character-shape dependent (referred to herein as nonglobal attributes). Global attributes are directly proportional to the in-use character field dimensions. The nonglobal attributes are those parameters that affect the overall shape of a character. While the shape of a character image determines the configuration of the stroke-trajectories, the size of the character field determines the size of the stroke-trajectories.
The character drawing point (see FIG. 19) defines the physical-pixel location on the display screen to generate a character. The character drawing point is specified by an (x,y) coordinate pair that defines the character field origin.
A stroke-vector and a stroke-trajactory are both defined by the (x,y) coordinates of the two end points of the line, and these two points are referred to herein as the starting point (x.sub.1,y.sub.1) and the tail point (x.sub.2,y.sub.2). The anchor point of a stroke is provided by the tail point of the immediate preceding stroke. The initial anchor point, which is the anchor point of the very first stroke or the initial stroke, is specified by the character drawing point.
The term "stroke-trajectory transition" (or simply "stroke transition") is used herein as an aid in defining when stroke-trajectories are drawn on the display screen. As the name implies, a stroke-transition occurs when there is a change in direction of a stroke-trajectory or a change in the visibility attribute from one stroke-vector to another. More precisely when any of the nonglobal stroke attributes change from one stroke-vector to the next, a stroke-transition occurs. In FIG. 10, a stroke-transition is noted with a small "o".
The line width of a character is determined by the logical-pel. An analogy is often made to a paint brush. A brush stroke painted over a straight line trajectory is modelled in the raster-scan display by the continuous mapping of each stroke-locus of pixels to a rectangular matrix of pixels. The rectangular matrix of pixels is commonly designated as the logical-pel. Referring to FIG. 11, the width of a stroke is defined in terms of the logical-pel's horizontal and vertical displacements from the stroke's locus, and the stroke's inclination with respect to the horizontal. Referring to FIG. 13, the diagram illustrates the four possible geometric alignments of the logical-pels with respect to the stroke-trajectory locus.